package model

import (
	"time"
)

// VoucherOrder 用户优惠券订单表
type VoucherOrder struct {
	Id         int64      `gorm:"primaryKey;autoIncrement;comment:主键"`
	UserId     string     `gorm:"type:varchar(255);not null;index;comment:用户id"`
	VoucherId  string     `gorm:"type:varchar(255);not null;index;comment:优惠券id"`
	Amount     float64    `gorm:"type:decimal(10,2);not null;default:0.00;comment:券金额"`
	PayTime    *time.Time `gorm:"comment:支付时间"`
	UseTime    *time.Time `gorm:"comment:使用时间"`
	Status     int8       `gorm:"not null;default:1;comment:订单状态，1：未使用，2：已使用，3：已退款"`
	CreateTime time.Time  `gorm:"autoCreateTime;comment:创建时间"`
	UpdateTime time.Time  `gorm:"autoUpdateTime;comment:更新时间"`
}

func (VoucherOrder) TableName() string {
	return "voucher_order"
}

// 订单状态常量
const (
	OrderStatusUnpaid   int8 = 0 // 未支付
	OrderStatusUnused   int8 = 1 // 未使用
	OrderStatusUsed     int8 = 2 // 已使用
	OrderStatusRefunded int8 = 3 // 已退款
)

// SeckillResult 秒杀结果
type SeckillResult struct {
	Success bool   `json:"success"`
	Message string `json:"message"`
	OrderId int64  `json:"order_id,omitempty"`
}

// SeckillRequest 秒杀请求
type SeckillRequest struct {
	VoucherId string `json:"voucher_id" binding:"required"`
}
